Tarea 5#
Trabajaremos con los conjuntos de datos Renewable Energy Consumption and Production de Our World in Data https://ourworldindata.org/renewable-energy). Estos conjuntos de datos están disponibles en el repositorio GitHub del curso, pueden ser importados con las URL: share-of-electricity-production-from-renewable-sources.csv, renewable-energy-consumption-by-country.csv
Su tarea consiste en crear mapas coropléticos de la producción y el consumo totales de energía renovable y el consumo en diferentes países del mundo animados en base a los años de producción/consumo entre (excluyendo) 2007 y 2017.
Punto 1#
Cargar el conjunto de datos de producción de energía renovable.
Ren_Con_Prod_url = 'https://raw.githubusercontent.com/lihkir/Uninorte/main/AppliedStatisticMS/DataVisualizationRPython/Lectures/Python/PythonDataSets/share-of-electricity-production-from-renewable-sources.csv'
import pandas as pd
Ren_Con_Prod_df = pd.read_csv(Ren_Con_Prod_url)
Ren_Con_Prod_df.head()
| Country | Code | Year | Renewable electricity (% electricity production) | |
|---|---|---|---|---|
| 0 | Afghanistan | AFG | 1990 | 67.730496 |
| 1 | Afghanistan | AFG | 1991 | 67.980296 |
| 2 | Afghanistan | AFG | 1992 | 67.994310 |
| 3 | Afghanistan | AFG | 1993 | 68.345324 |
| 4 | Afghanistan | AFG | 1994 | 68.704512 |
El data set Renewable Energy Production presenta las siguientes columnas:
Country: País de origen productor de energía renovable.
Code: Código del país productor de energía renovable.
Year: año de producción de energía renovable.
Renewable electricity (% electricity production): porcentaje de producción de energía renovable.
Punto 2#
Ordenar el DataFrame de producción en función de la característica Year.
Ren_Con_Prod_df.sort_values(by=["Year"],inplace=True)
Ren_Con_Prod_df.tail()
| Country | Code | Year | Renewable electricity (% electricity production) | |
|---|---|---|---|---|
| 2707 | Lebanon | LBN | 2014 | 1.075089 |
| 919 | Central African Republic | CAF | 2014 | 85.792350 |
| 2682 | Latvia | LVA | 2014 | 54.541918 |
| 4743 | Switzerland | CHE | 2014 | 58.015463 |
| 5406 | Zimbabwe | ZWE | 2014 | 55.622069 |
Punto 3#
Generar un mapa de coropletas para la producción de energía renovable utilizando el módulo plotly express animado en función del Year.
import plotly.express as px
from IPython.display import IFrame, display, HTML
import chart_studio.plotly as py
from IPython.display import HTML
config={'showLink': False, 'displayModeBar': False}
fig = px.choropleth(Ren_Con_Prod_df, locations="Code", #códigos de país para ubicar los datos en el mapa
color = "Renewable electricity (% electricity production)", #columna para determinar el color de cada país
hover_name = "Country", #determina qué información se mostrará cuando se pase el cursor sobre un país
animation_frame='Year', # visualización animada basados en los valores de la columna 'Year'
color_continuous_scale = px.colors.sequential.Plasma) # define la escala de colores que se utilizará para representar los diferentes valores
#fig.show()
HTML(fig.to_html())
En este gráfico interactivo vemos la producción de energía que proviene por país por año de tecnologías renovables.
Punto 4#
Actualice el diseño para incluir un estilo de proyección adecuado y un texto de título, y luego muestre la figura
fig = px.choropleth(Ren_Con_Prod_df, locations="Code", #códigos de país para ubicar los datos en el mapa
color = "Renewable electricity (% electricity production)", #columna para determinar el color de cada país
hover_name = "Country", #determina qué información se mostrará cuando se pase el cursor sobre un país
animation_frame='Year', # visualización animada basados en los valores de la columna 'Year'
color_continuous_scale = px.colors.sequential.Plasma) # define la escala de colores que se utilizará para representar los diferentes valores
fig.update_layout(title_text = 'Renewable electricity (% electricity production)', # titulo del gráfico
geo = dict(projection={'type':'natural earth'}) # configuración geográfica del mapa
)
#fig.show()
HTML(fig.to_html())
En este gráfico interactivo podemos rotar como un globo terráqueo real.
Punto 5#
Cargue el conjunto de datos de consumo de energía renovable.
Ren_Con_Cons_url = 'https://raw.githubusercontent.com/lihkir/Uninorte/main/AppliedStatisticMS/DataVisualizationRPython/Lectures/Python/PythonDataSets/renewable-energy-consumption-by-country.csv'
import pandas as pd
Ren_Con_Cons_df = pd.read_csv(Ren_Con_Cons_url)
Ren_Con_Cons_df.head()
| Country | Code | Year | Traditional biofuels | Other renewables (modern biofuels, geothermal, wave & tidal) | Wind | Solar PV | Hydropower | Total | |
|---|---|---|---|---|---|---|---|---|---|
| 0 | Algeria | DZA | 1965 | NaN | 0.0 | 0.0 | 0.0 | NaN | 0.0 |
| 1 | Algeria | DZA | 1966 | NaN | 0.0 | 0.0 | 0.0 | NaN | 0.0 |
| 2 | Algeria | DZA | 1967 | NaN | 0.0 | 0.0 | 0.0 | NaN | 0.0 |
| 3 | Algeria | DZA | 1968 | NaN | 0.0 | 0.0 | 0.0 | NaN | 0.0 |
| 4 | Algeria | DZA | 1969 | NaN | 0.0 | 0.0 | 0.0 | NaN | 0.0 |
El data set Renewable Energy Consumption presenta las siguientes columnas:
Country: País de origen productor de energía renovable.
Code: Código del país productor de energía renovable.
Year: año de producción de energía renovable.
Traditional biofuels: conbustibles tradicionales.
Other renewables (modern biofuels, geothermal, wave & tidal): Otras energías renovables (biocombustibles modernos, geotérmica, undimotriz y mareomotriz).
Wind: viento.
Solar PV: Energía solar fotovoltaica.
Hydropower: energía hidroeléctrica.
Total: Consumo total de energía renovable.
Información del dataset.#
Ren_Con_Cons_df.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 3344 entries, 0 to 3343
Data columns (total 9 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 Country 3344 non-null object
1 Code 3344 non-null object
2 Year 3344 non-null int64
3 Traditional biofuels 0 non-null float64
4 Other renewables (modern biofuels, geothermal, wave & tidal) 3344 non-null float64
5 Wind 3344 non-null float64
6 Solar PV 3344 non-null float64
7 Hydropower 0 non-null float64
8 Total 3344 non-null float64
dtypes: float64(6), int64(1), object(2)
memory usage: 235.2+ KB
El dataset de consumo de energía renovable está compuesto por 9 columnas y 3344 filas, en la cual ‘Country’ y ‘Code’ son categóricas, ‘Year’ tipo entero y ‘Traditiona biofuel’, ‘Other renewables (modern biofuels, geothermal, wave & tidal)’, ‘Wind’, ‘Solar PV’, ‘Hydropower’ y ‘Total’ son de tipo decinal.
Descripción del dataset.#
Ren_Con_Cons_df.describe()
| Year | Traditional biofuels | Other renewables (modern biofuels, geothermal, wave & tidal) | Wind | Solar PV | Hydropower | Total | |
|---|---|---|---|---|---|---|---|
| count | 3344.000000 | 0.0 | 3344.000000 | 3344.000000 | 3344.000000 | 0.0 | 3344.000000 |
| mean | 1991.169856 | NaN | 2.276702 | 1.691107 | 0.351261 | NaN | 4.319069 |
| std | 14.905982 | NaN | 7.898646 | 11.395594 | 2.885864 | NaN | 19.741046 |
| min | 1965.000000 | NaN | 0.000000 | 0.000000 | 0.000000 | NaN | 0.000000 |
| 25% | 1978.000000 | NaN | 0.000000 | 0.000000 | 0.000000 | NaN | 0.000000 |
| 50% | 1992.000000 | NaN | 0.024500 | 0.000000 | 0.000000 | NaN | 0.057000 |
| 75% | 2004.000000 | NaN | 1.188779 | 0.012000 | 0.000832 | NaN | 1.558361 |
| max | 2016.000000 | NaN | 84.606506 | 241.000000 | 66.200000 | NaN | 380.607427 |
En la descripción del dataset de consumo de energía renovable encontramos un resumen estadístico de las columnas de tipo número.
Verificar datos nulos.#
Ren_Con_Cons_df.isnull().sum()
Country 0
Code 0
Year 0
Traditional biofuels 3344
Other renewables (modern biofuels, geothermal, wave & tidal) 0
Wind 0
Solar PV 0
Hydropower 3344
Total 0
dtype: int64
Se logra identificar un total de 6688 datos entre las columnas ‘Traditional biofuels’ y ‘Hydropower ‘.
Limpieza de datos.#
Teniendo en cuenta que los todos los datos de las columnas ‘Traditional biofuels’ y ‘Hydropower ‘ son nulos se decide a elimar las columnas del estudio.
Ren_Con_Cons_df = Ren_Con_Cons_df.drop(['Traditional biofuels','Hydropower'], axis=1)
Ren_Con_Cons_df.head()
| Country | Code | Year | Other renewables (modern biofuels, geothermal, wave & tidal) | Wind | Solar PV | Total | |
|---|---|---|---|---|---|---|---|
| 0 | Algeria | DZA | 1965 | 0.0 | 0.0 | 0.0 | 0.0 |
| 1 | Algeria | DZA | 1966 | 0.0 | 0.0 | 0.0 | 0.0 |
| 2 | Algeria | DZA | 1967 | 0.0 | 0.0 | 0.0 | 0.0 |
| 3 | Algeria | DZA | 1968 | 0.0 | 0.0 | 0.0 | 0.0 |
| 4 | Algeria | DZA | 1969 | 0.0 | 0.0 | 0.0 | 0.0 |
Muestra de dataset de consumo de energia renovable sin las columnas ‘Traditional biofuels’ y’Hydropower’.
Ren_Con_Cons_df.isnull().sum()
Country 0
Code 0
Year 0
Other renewables (modern biofuels, geothermal, wave & tidal) 0
Wind 0
Solar PV 0
Total 0
dtype: int64
Se verifica que el nuevo dataset no tiene datos faltantes.
Punto 6#
Convierta el DataFrame de consumo a un formato adecuado para su visualización.
Punto 7#
Ordenar el DataFrame de consumo en base a la característica Year.
Ren_Con_Cons_df.sort_values(by=["Year"],inplace=True)
Ren_Con_Cons_df.tail()
| Country | Code | Year | Other renewables (modern biofuels, geothermal, wave & tidal) | Wind | Solar PV | Total | |
|---|---|---|---|---|---|---|---|
| 947 | Finland | FIN | 2016 | 11.794548 | 3.068000 | 0.013462 | 14.876009 |
| 155 | Australia | AUS | 2016 | 3.352482 | 13.190887 | 7.157880 | 23.701249 |
| 2863 | Thailand | THA | 2016 | 9.649613 | 0.465826 | 2.334719 | 12.450158 |
| 2603 | South Korea | KOR | 2016 | 12.018676 | 1.779674 | 5.236650 | 19.035000 |
| 3343 | Vietnam | VNM | 2016 | 0.059162 | 0.241540 | 0.007170 | 0.307871 |
Punto 8#
Generar un mapa coroplético para el consumo de energía renovable utilizando el módulo plotly express animado en función del año.
config={'showLink': False, 'displayModeBar': False}
fig = px.choropleth(Ren_Con_Cons_df, locations="Code", #códigos de país para ubicar los datos en el mapa
color = "Total", #columna para determinar el color de cada país
hover_name = "Country", #determina qué información se mostrará cuando se pase el cursor sobre un país
animation_frame='Year', # visualización animada basados en los valores de la columna 'Year'
color_continuous_scale = px.colors.sequential.Plasma) # define la escala de colores que se utilizará para representar los diferentes valores
fig.update_layout(geo=dict(showcountries=True), width=800, height=400)
HTML(fig.to_html())
#fig.show()
En este gráfico interactivo vemos el consumo total de energía renovable en cada país por año.
Punto 9#
Actualice el diseño para incluir un estilo de proyección adecuado y un texto de título, y luego muestre la figura.
fig = px.scatter_geo(Ren_Con_Cons_df,
locations="Code", # Códigos de país para ubicar las burbujas
size="Total", # Columna para determinar el tamaño de las burbujas
hover_name="Country", # Información mostrada al pasar el cursor sobre una burbuja
animation_frame="Year", # Animación basada en la columna 'Year'
color="Total", # Columna para determinar el color de las burbujas
projection="natural earth", # Tipo de proyección del mapa
title='Renewable Electricity (% of Electricity Consumption)', # Título del gráfico
color_continuous_scale=px.colors.sequential.Viridis, # Escala de colores 'Viridis'
size_max=50 # Aumentar el tamaño máximo de las burbujas
)
fig.update_layout(geo=dict(showcountries=True), width=800, height=400) # Tamaño del gráfico
#fig.show()
HTML(fig.to_html())
En este gráfico interactivo podemos rotar como un globo terráqueo real.